package 继承.protect关ed键字2;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-16
 * Time: 19:55
 */
public class TestC {
    public static void main(String[] args) {
        D d = new D();
        d.method();
        // System.out.println(d.a);//编译报错，父类中private成员在不同包其他类中不可见
        // System.out.println(d.b);//父类中protected成员在不同包其他类中不能直接访问
        System.out.println(d.c);//父类中public成员在不同包其他类中可以直接访问
        // System.out.println(d.d);//父类中默认访问权限修饰的成员在不同包其他类中不能直接访问
    }
}

/*
注意：父类中的private成员变量虽然在子类中不能直接访问，但是也能继承到子类中了

什么时候下用哪一种呢?
我们希望类要尽量做到 "封装", 即隐藏内部实现细节, 只暴露出 必要 的信息给类的调用者。
因此我们在使用的时候应该尽可能的使用 比较严格 的访问权限. 例如如果一个方法能用 private, 就尽量不要
用 public。
另外, 还有一种 简单粗暴 的做法: 将所有的字段设为 private, 将所有的方法设为 public. 不过这种方式属于是
对访问权限的滥用, 还是更希望同学们能写代码的时候认真思考, 该类提供的字段方法到底给 "谁" 使用(是类内
部自己用, 还是类的调用者使用, 还是子类使用)。
 */